package demo;

import java.util.Scanner;

/**  
* @文件名称: Test06.java 
* @类路径: demo 
* @描述: TODO 
* @作者：Administrator 
* @时间：2021年12月19日 上午12:11:32 
* @版本：V1.0  
* 9.在主函数中接收10个数存入数组，
* 在自定义函数中，将该数组中的最大值与第一个元素交换，最小值与最后一个元素交换，
* 然后在主函数中输出交换后的数组  
*/
public class Test06 {
	public static void main(String[] args) {
		//1定义一个长度10的数组
		double[] nums = new double[10];
		Scanner cc = new Scanner(System.in);
		//2循环赋值
		for (int i = 0; i < nums.length; i++) {
			System.out.println("请输入第"+(i+1)+"个数字：");
			nums[i] = cc.nextDouble();
		}
		changNums(nums);
		
		for (int i = 0; i < nums.length; i++) {
			System.out.print("\t"+nums[i]);
		}
		
	}
	
	//3，定义一个方法，将该数组中的最大值与第一个元素交换，最小值与最后一个元素交换
	public static void changNums(double[] nums) {//把形参设置为数组		
		//知识点： 第一个元素nums[0] 最后一个元素nums[nums.length-1] 
		double max=nums[0];//先假设数组的第1个元素的值为最大值
		int maxNum=0;//最大值的下标
		double min=nums[0];//先假设数组的第1个值为最小值
		int minNum=0;//最小值的下标
		for (int i = 1; i < nums.length; i++) {//然后把数组剩下的元素，每个拿来跟最大值max比大小
			//如果，找到的值比最大值max大，就把max的值。换成这个找到的值，并用maxNum记录下标
			if (nums[i]>max) {
				max=nums[i];
				maxNum=i;
			}
			
			if (nums[i]<min) {
				min=nums[i];
				minNum=i;
			}
		}
		//新建一个中转变量
		double tmp =0;
		tmp = nums[0];
		nums[0]=nums[maxNum];//最大值与第一个元素交换
		nums[maxNum] = tmp;		
		
		
		tmp = nums[nums.length-1];
		nums[nums.length-1]=nums[minNum];//最小值与最后一个元素交换		
		nums[minNum] = tmp;		
	}		
	
}
